]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
tests: Port GNOMEversionCompare() test to jasmine
authorFlorian Müllner <fmuellner@gnome.org>
Sat, 20 Jan 2024 07:00:39 +0000 (08:00 +0100)
committerMarge Bot <marge-bot@gnome.org>
Tue, 21 May 2024 13:42:28 +0000 (13:42 +0000)
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3164>

tests/meson.build
tests/unit/versionCompare.js

index 4a6025b9b852b9fdd75386d44acdcbb268d0028f..2b59303f264638bfb3fe589d797b12a2341033ca 100644 (file)
@@ -28,6 +28,7 @@ unit_tests = [
     'params',
     'signalTracker',
     'url',
+    'versionCompare',
 ]
 
 foreach test : unit_tests
@@ -45,18 +46,6 @@ foreach test : unit_tests
     workdir: meson.current_source_dir())
 endforeach
 
-legacy_tests = [
-    'versionCompare',
-]
-
-foreach test : legacy_tests
-  test(test, run_test,
-    args: 'unit/@0@.js'.format(test),
-    suite: 'unit',
-    env: unit_testenv,
-    workdir: meson.current_source_dir())
-endforeach
-
 shell_tests = [
   {
     'name': 'basic',
index 39388a3b0591bfa315efcda94daf415f7c705fda..8068156894d966056462d7d83eac1e173d8450e2 100644 (file)
@@ -1,73 +1,54 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-
 // Test cases for version comparison
 
-const JsUnit = imports.jsUnit;
-
 import 'resource:///org/gnome/shell/ui/environment.js';
+import {GNOMEversionCompare} from 'resource:///org/gnome/shell/misc/util.js';
+
+describe('GNOMEversionCompare()', () => {
+    it('compares matching versions', () => {
+        expect(GNOMEversionCompare('40', '40')).toBe(0);
+    });
+
+    it('compares older versions', () => {
+        expect(GNOMEversionCompare('40', '42')).toBeLessThan(0);
+        expect(GNOMEversionCompare('40.0', '40.1')).toBeLessThan(0);
+    });
+
+    it('compares newer versions', () => {
+        expect(GNOMEversionCompare('42', '40')).toBeGreaterThan(0);
+        expect(GNOMEversionCompare('40.1', '40.0')).toBeGreaterThan(0);
+    });
+
+    it('compares legacy versions', () => {
+        expect(GNOMEversionCompare('3.38.0', '40')).toBeLessThan(0);
+        expect(GNOMEversionCompare('40', '3.38.0')).toBeGreaterThan(0);
+    });
+
+    it('compares pre-release versions', () => {
+        expect(GNOMEversionCompare('40.beta', '40')).toBeLessThan(0);
+        expect(GNOMEversionCompare('40.alpha', '40')).toBeLessThan(0);
+        expect(GNOMEversionCompare('40.rc', '40')).toBeLessThan(0);
+
+        expect(GNOMEversionCompare('40', '40.beta')).toBeGreaterThan(0);
+        expect(GNOMEversionCompare('40', '40.alpha')).toBeGreaterThan(0);
+        expect(GNOMEversionCompare('40', '40.rc')).toBeGreaterThan(0);
+
+        expect(GNOMEversionCompare('40.alpha', '40.beta')).toBeLessThan(0);
+        expect(GNOMEversionCompare('40.beta', '40.rc')).toBeLessThan(0);
+        expect(GNOMEversionCompare('40.rc', '40.0')).toBeLessThan(0);
+    });
 
-import * as Util from 'resource:///org/gnome/shell/misc/util.js';
+    it('compares point-release versions', () => {
+        expect(GNOMEversionCompare('40.1', '40')).toBeGreaterThan(0);
+        expect(GNOMEversionCompare('40.alpha.1', '40.alpha')).toBeGreaterThan(0);
+        expect(GNOMEversionCompare('40.beta.1.1', '40.beta.1')).toBeGreaterThan(0);
 
-const tests = [
-    {
-        v1: '40',
-        v2: '40',
-        res: 0,
-    },
-    {
-        v1: '40',
-        v2: '42',
-        res: -1,
-    },
-    {
-        v1: '42',
-        v2: '40',
-        res: 1,
-    },
-    {
-        v1: '3.38.0',
-        v2: '40',
-        res: -1,
-    },
-    {
-        v1: '40',
-        v2: '3.38.0',
-        res: 1,
-    },
-    {
-        v1: '40',
-        v2: '40.rc',
-        res: 1,
-    },
-    {
-        v1: '40.alpha.1.1',
-        v2: '40',
-        res: -1,
-    },
-    {
-        v1: '40',
-        v2: '40.alpha.1.1',
-        res: 1,
-    },
-    {
-        v1: '40.beta',
-        v2: '40',
-        res: -1,
-    },
-    {
-        v1: '40.1',
-        v2: '40',
-        res: 1,
-    },
-    {
-        v1: '',
-        v2: '40.alpha',
-        res: -1,
-    },
-];
+        expect(GNOMEversionCompare('40', '40.1')).toBeLessThan(0);
+        expect(GNOMEversionCompare('40.alpha', '40.alpha.1')).toBeLessThan(0);
+        expect(GNOMEversionCompare('40.beta.1', '40.beta.1.1')).toBeLessThan(0);
+    });
 
-for (let i = 0; i < tests.length; i++) {
-    const name = `Test #${i} v1: ${tests[i].v1}, v2: ${tests[i].v2}`;
-    print(name);
-    JsUnit.assertEquals(name, Util.GNOMEversionCompare(tests[i].v1, tests[i].v2), tests[i].res);
-}
+    it('compares empty versions', () => {
+        expect(GNOMEversionCompare('', '40')).toBeLessThan(0);
+    });
+});